"""
题目8: 列表操作
难度: ★☆☆☆☆
类型: 数据结构

要求:
1. 创建一个包含5个数字的列表
2. 在列表末尾添加一个数字
3. 在列表开头插入一个数字
4. 删除列表中的第一个元素
5. 删除列表中的最后一个元素
6. 对列表进行排序（升序和降序）
7. 查找列表中的最大值和最小值
8. 计算列表的平均值

提示:
- 使用append()添加元素
- 使用insert()插入元素
- 使用remove()删除元素
- 使用sort()排序
- 使用max()和min()查找最值

示例输出:
原始列表: [3, 1, 4, 1, 5]
添加后: [3, 1, 4, 1, 5, 9]
插入后: [0, 3, 1, 4, 1, 5, 9]
删除第一个: [3, 1, 4, 1, 5, 9]
删除最后一个: [3, 1, 4, 1, 5]
升序排序: [1, 1, 3, 4, 5]
降序排序: [5, 4, 3, 1, 1]
最大值: 5
最小值: 1
平均值: 2.8
"""

# 请在下面编写你的代码
# 1. 创建列表
numbers = [3, 1, 4, 1, 5]
print(f"原始列表: {numbers}")

# 2. 添加元素
numbers.append(9)
print(f"添加后: {numbers}")

# 3. 插入元素
numbers.insert(0, 0)
print(f"插入后: {numbers}")

# 4. 删除第一个元素
numbers.pop(1)
print(f"删除第一个: {numbers}")

# 5. 删除最后一个元素
numbers.pop()
print(f"删除最后一个: {numbers}")

# 6. 排序
numbers_sorted = numbers.copy()
numbers_sorted.sort()
print(f"升序排序: {numbers_sorted}")

numbers_sorted_desc = numbers.copy()
numbers_sorted_desc.sort(reverse=True)
print(f"降序排序: {numbers_sorted_desc}")

# 7. 查找最值
print(f"最大值: {max(numbers)}")
print(f"最小值: {min(numbers)}")

# 8. 计算平均值
average = sum(numbers) / len(numbers)
print(f"平均值: {average}")

# 扩展练习：列表推导式
print("\n=== 扩展练习 ===")
# 生成1-10的平方数
squares = [x**2 for x in range(1, 11)]
print(f"1-10的平方: {squares}")

# 生成偶数列表
evens = [x for x in range(1, 21) if x % 2 == 0]
print(f"1-20的偶数: {evens}")

# 列表切片
print(f"前3个元素: {numbers[:3]}")
print(f"后3个元素: {numbers[-3:]}")
print(f"中间元素: {numbers[1:-1]}") 